import Cookies from 'js-cookie'
const TokenKey = 'Admin-Token'
export function getURIParam(key) {
  const reg = new RegExp(`(^|&)${key}=([^&]*)(&|$)`)
  // @ts-ignore
  const paramkey = window.location.search.substr(1).match(reg)
  if (paramkey != null && paramkey[2] != 'false') {
    return decodeURIComponent(paramkey[2])
  }
  return false
}

/**
 * 是否是生产
 * @returns
 */
export function isProduction() {
  return process.env.NODE_ENV === 'production'
}

export function getMockUserInfo() {
  return {
    Cookie:
      'xr3d_token=M2R3xlTluXleLfgg1FbBhXvWk4VP7QLzPy9ck2XVlhKpsIaqFvuen0CeHr813Shb; Admin-Token=M2R3xlTluXleLfgg1FbBhXvWk4VP7QLzPy9ck2XVlhKpsIaqFvuen0CeHr813Shb; sidebarStatus=0',
    Authorization:
      getToken() ||
      'Bearer eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImQ5ZTJjYWI1LTFlMGEtNDcxZS1iMWZiLWMzYmM3ZGNiMDA3MSJ9.F7SGfIo42_DW2PfjqkEhO2d32dKpCyDOZeDYnEJHPyf7m6s8oiIsp0uBhxsTBNHH5VzsOwHfh7yyTzOzILuu5Q'
  }
}

export function getUserInfo() {
  return {
    Cookie: getToken(),
    Authorization: getToken()
  }
}

/**
 * 判断是否是一个字符串
 * @param str
 * @returns
 */
export function isString(str) {
  return typeof str === 'string'
}

/**
 * 判断是否是一个boolean值
 * @param str
 * @returns
 */
export function isBoolean(bool) {
  return typeof bool === 'boolean'
}

/**
 * 判断是否是一个空值
 * @param str
 * @returns
 */
export function isNull(str) {
  return str === undefined || str === null
}

/**
 * 判断是否是一个Number值
 * @param str
 * @returns
 */
export function isNumber(num) {
  return typeof num === 'number'
}

/**
 * 判断是否是一个对象
 * @param str
 * @returns
 */
export function isObject(object) {
  return typeof object === 'object'
}

/**
 * 判断是否是一个函数
 * @param func
 * @returns
 */
export function isFunction(func) {
  return typeof func === 'function'
}

export function isArray(arr) {
  return Array.isArray(arr)
}

/**
 * 判断字符串是否是number类型
 * @param str
 * @returns
 */
export function isStringNumber(str) {
  const reg = /^(\+|-)?\d+($|\.\d+$)/
  if (reg.test(str)) {
    return true
  }

  return false
}

export function parseValue(value, defaultValue) {
  if (isNull(value)) {
    return defaultValue
  } else {
    return value
  }
}

export function cloneArray(object) {
  if (!object) {
    return null
  }

  if (!isArray(object)) {
    return null
  }

  return object.concat()
}

export function getToken() {
  return Cookies.get(TokenKey)
}

export function setToken(token) {
  return Cookies.set(TokenKey, token)
}

export function removeToken() {
  return Cookies.remove(TokenKey)
}
